The present disclosure generally relates to configuring computer systems and, more particularly, to systems and methods for enabling computer systems"" devices and components.
Technological advancements for increasing the number of devices for computer systems and servers have taken on many forms. Several types of devices have become available for computer systems allowing users to expand a system""s functionality and configuration. For example, conventional systems can include expansion slots or bays connected to the system""s mother board for connecting additional devices.
Two of the most common interfaces for connecting peripheral devices include Peripheral Component Interconnect (PCI) interface systems and small computer system interface (SCSI) systems. PCI and SCSI interfaces allow users to add additional devices such as hard drives, tape drives, CD-ROM drives, scanners, etc. relatively easy without users having to open the system""s housing.
Rivaling PCI and SCSI interface systems is the Universal Serial Bus (USB). USB is an external bus standard that supports data transfer rates of 12 Mbps (12 million bits per second). A single USB port can be used to connect up to 127 peripheral devices, such as mice, modems, and keyboards. USB supports Plug-and-Play (PnP)and xe2x80x9chot-plugxe2x80x9d installation of devices.
With a data at the rate of 12 Mbps and the availability of PCI-USB add-in cards, USB is expected to completely replace serial parallel ports. A single independent USB bus can support multiple medium to low-speed peripherals such as telephones, digital cameras, modems, keyboards, mice, digital joysticks, some CD-ROM drives, tape and floppy drives, digital scanners and specialty printers. USB""s data rate also accommodates a whole new generation of peripherals, including Movie Picture Experts Group (MPEG) video-base products, data gloves and digitizers. Additionally, USB can provide an interface for Integrated Services Digital Network (ISDN) and digital Public Branch Exchanges (PBXs).
Problems can occur when interfacing USB devices with a computer system""s basic input output system (BIOS) and operating system (OS). For example FIG. 1 is illustrative of one technical disadvantage of using additional hardware to provide a device interface. FIG. 1 illustrates a common driver interface configuration used to interface a USB keyboard and mouse to an OS via a device driver. The USB controller receives an input from the keyboard or mouse and provides an input to a controller interface. The controller interface utilizes a keyboard controller, typically an 8042 controller, to generate a system interrupt. Upon generating a system interrupt the input data for the device can be passed to the driver via an I/O register in the 8042. Thus, the 8042 controller plays an integral part in providing real time data from the device to the device""s driver.
A technical disadvantage with the configuration illustrated in FIG. 1 is that the USB devices can be unavailable during system initialization, system set-up, and safe mode. Typically, the mouse driver interface relies on the system""s BIOS to provide input data for the device in real time. The BIOS places a far call routine to the driver and passes the input data to the device""s driver via the stack. During initialization, the associated hardware and software routines for the device must be loaded in the system""s available memory in order for the device to be enabled.
A constraint is placed on the conventional configuration due to the limited amount of memory available during initialization. The BIOS only has a limited amount of available memory thereby limiting the number of BIOS initializable devices. For instance, a keyboard is needed during safe mode operation of the system for input to the safe mode menu. If the system BIOS fails to initialize and configure the keyboard and associated software routines the keyboard is useless. The user then would be unable to provide input to the system. Thus, as new BIOS controlled USB devices are added to the system, the availability of real time data transferability by the BIOS becomes limited.
In accordance with the teachings of the present disclosure, systems and methods are described for enabling computer system devices and components. The conceptual groundwork for the present disclosure involves configuring computer systems having USB devices and controllers.
According to one aspect of the present embodiment a method for use in a computer system having a processor is disclosed. The method includes receiving an input from a device coupled to the system, generating an interrupt signal in response to the input and placing the system in a management mode in response to the interrupt. An interrupt routine associated with the interrupt is provided, the interrupt routine being located in an upper level of the system""s available memory. The method also includes providing information to a driver associated with the system.
More specifically, one embodiment of the method includes receiving the interrupt and providing a system management interrupt.
Another embodiment of the method includes providing an input to a system management interrupt handler and processing the interrupt routine in response to the input.
A further embodiment of the method includes initializing the controller and device during a BIOS power on self test routine, wherein the initializing includes configuring the system to communicate information between the input device and the driver.
According to another aspect of one embodiment a method of initializing a computer system having a controller and device is disclosed. The method includes initializing the controller and device, wherein the controller is associated with the device. The method further includes configuring the controller to generate an interrupt in response to an input from the device and configuring a chipset coupled to the system. The step of configuring includes associating the interrupt to an interrupt request line coupled to the system, and attributing the interrupt request line to a system management interrupt.
In another aspect of one embodiment, a computer system is disclosed. The computer system includes at least one processor, at least one storage medium coupled to the processor, a controller coupled to the system, and a program of instructions stored within the storage medium. The program includes at least one instruction configured to receive an input from a device and at least one instruction configured to provide a system management interrupt in response to the input. The system management interrupt places the processor in a system management mode. The method also includes at least one instruction to provide information to a driver associated with the system.
In a further aspect of one embodiment, a method for providing a service routine in a computer system is disclosed. The method includes providing a controller configured to generate a system management interrupt, receiving an input to the controller from a device coupled to the system, and generating the system management interrupt in response to the input. The system management interrupt is associated with providing information to a system driver and the information is responsive to the input.
In another aspect of one embodiment, a method of providing information to a driver in a computer system is disclosed. The method includes providing a universal serial bus (USB) device and USB controller operably coupled to the USB device. The method includes configuring the USB controller to receive an input from the USB device and generate an interrupt signal responsive to the input. The method includes generating a system management interrupt in response to the USB controller""s interrupt signal, placing the system in a system management mode in response to the system management interrupt, and processing an interrupt routine located in an upper level of a memory device operably coupled to the system. The method further includes providing information to a system driver wherein the information is associated with the interrupt routine and the input from the USB device.
It is a technical advantage that a system can be configured using existing hardware and software to generate system interrupts for universal serial bus devices.
It is another technical advantage that using the top of memory for data and code affords expandability to a system incorporating the present disclosure.
It is a further technical advantage that information or data from a USB device can be provided to a system""s driver in real time obviating the need for using additional hardware that requires polling.